home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / NET / X25.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  7KB  |  222 lines

  1. /*
  2.  *    Declarations of X.25 Packet Layer type objects.
  3.  *
  4.  *    Jonathan Naylor        17/11/96
  5.  */
  6.  
  7. #ifndef _X25_H
  8. #define _X25_H 
  9. #include <linux/x25.h>
  10.  
  11. #define    X25_ADDR_LEN            16
  12.  
  13. #define    X25_MAX_L2_LEN            18    /* 802.2 LLC */
  14.  
  15. #define    X25_STD_MIN_LEN            3
  16. #define    X25_EXT_MIN_LEN            4
  17.  
  18. #define    X25_GFI_SEQ_MASK        0x30
  19. #define    X25_GFI_STDSEQ            0x10
  20. #define    X25_GFI_EXTSEQ            0x20
  21.  
  22. #define    X25_Q_BIT            0x80
  23. #define    X25_D_BIT            0x40
  24. #define    X25_STD_M_BIT            0x10
  25. #define    X25_EXT_M_BIT            0x01
  26.  
  27. #define    X25_CALL_REQUEST        0x0B
  28. #define    X25_CALL_ACCEPTED        0x0F
  29. #define    X25_CLEAR_REQUEST        0x13
  30. #define    X25_CLEAR_CONFIRMATION        0x17
  31. #define    X25_DATA            0x00
  32. #define    X25_INTERRUPT            0x23
  33. #define    X25_INTERRUPT_CONFIRMATION    0x27
  34. #define    X25_RR                0x01
  35. #define    X25_RNR                0x05
  36. #define    X25_REJ                0x09
  37. #define    X25_RESET_REQUEST        0x1B
  38. #define    X25_RESET_CONFIRMATION        0x1F
  39. #define    X25_REGISTRATION_REQUEST    0xF3
  40. #define    X25_REGISTRATION_CONFIRMATION    0xF7
  41. #define    X25_RESTART_REQUEST        0xFB
  42. #define    X25_RESTART_CONFIRMATION    0xFF
  43. #define    X25_DIAGNOSTIC            0xF1
  44. #define    X25_ILLEGAL            0xFD
  45.  
  46. /* Define the various conditions that may exist */
  47.  
  48. #define    X25_COND_ACK_PENDING    0x01
  49. #define    X25_COND_OWN_RX_BUSY    0x02
  50. #define    X25_COND_PEER_RX_BUSY    0x04
  51.  
  52. /* Define Link State constants. */
  53. enum {
  54.     X25_STATE_0,        /* Ready */
  55.     X25_STATE_1,        /* Awaiting Call Accepted */
  56.     X25_STATE_2,        /* Awaiting Clear Confirmation */
  57.     X25_STATE_3,        /* Data Transfer */
  58.     X25_STATE_4        /* Awaiting Reset Confirmation */
  59. };
  60.  
  61. enum {
  62.     X25_LINK_STATE_0,
  63.     X25_LINK_STATE_1,
  64.     X25_LINK_STATE_2,
  65.     X25_LINK_STATE_3
  66. };
  67.  
  68. #define X25_DEFAULT_T20        (180 * HZ)        /* Default T20 value */
  69. #define X25_DEFAULT_T21        (200 * HZ)        /* Default T21 value */
  70. #define X25_DEFAULT_T22        (180 * HZ)        /* Default T22 value */
  71. #define    X25_DEFAULT_T23        (180 * HZ)        /* Default T23 value */
  72. #define    X25_DEFAULT_T2        (3   * HZ)        /* Default ack holdback value */
  73.  
  74. #define    X25_DEFAULT_WINDOW_SIZE    2            /* Default Window Size    */
  75. #define    X25_DEFAULT_PACKET_SIZE    X25_PS128        /* Default Packet Size */
  76. #define    X25_DEFAULT_THROUGHPUT    0x0A            /* Deafult Throughput */
  77. #define    X25_DEFAULT_REVERSE    0x00            /* Default Reverse Charging */
  78.  
  79. #define X25_SMODULUS         8
  80. #define    X25_EMODULUS        128
  81.  
  82. /*
  83.  *    X.25 Facilities constants.
  84.  */
  85.  
  86. #define    X25_FAC_CLASS_MASK    0xC0
  87.  
  88. #define    X25_FAC_CLASS_A        0x00
  89. #define    X25_FAC_CLASS_B        0x40
  90. #define    X25_FAC_CLASS_C        0x80
  91. #define    X25_FAC_CLASS_D        0xC0
  92.  
  93. #define    X25_FAC_REVERSE        0x01
  94. #define    X25_FAC_THROUGHPUT    0x02
  95. #define    X25_FAC_PACKET_SIZE    0x42
  96. #define    X25_FAC_WINDOW_SIZE    0x43
  97.  
  98. #define    X25_MAX_FAC_LEN        20        /* Plenty to spare */
  99. #define    X25_MAX_CUD_LEN        128
  100.  
  101. struct x25_route {
  102.     struct x25_route    *next;
  103.     x25_address        address;    /* Start of address range */
  104.     unsigned int        sigdigits;    /* Number of sig digits */
  105.     struct device        *dev;        /* More than one for MLP */
  106. };
  107.  
  108. struct x25_neigh {
  109.     struct x25_neigh    *next;
  110.     struct device        *dev;
  111.     unsigned int        state;
  112.     unsigned int        extended;
  113.     struct sk_buff_head    queue;
  114.     unsigned long        t20;
  115.     struct timer_list    t20timer;
  116. };
  117.  
  118. typedef struct {
  119.     x25_address        source_addr, dest_addr;
  120.     struct x25_neigh    *neighbour;
  121.     unsigned int        lci;
  122.     unsigned char        state, condition, qbitincl, intflag;
  123.     unsigned short        vs, vr, va, vl;
  124.     unsigned long        t2, t21, t22, t23;
  125.     unsigned short        fraglen;
  126.     struct sk_buff_head    ack_queue;
  127.     struct sk_buff_head    fragment_queue;
  128.     struct sk_buff_head    interrupt_in_queue;
  129.     struct sk_buff_head    interrupt_out_queue;
  130.     struct sock        *sk;        /* Backlink to socket */
  131.     struct timer_list    timer;
  132.     struct x25_causediag    causediag;
  133.     struct x25_facilities    facilities;
  134.     struct x25_calluserdata    calluserdata;
  135. } x25_cb;
  136.  
  137. /* af_x25.c */
  138. extern int  sysctl_x25_restart_request_timeout;
  139. extern int  sysctl_x25_call_request_timeout;
  140. extern int  sysctl_x25_reset_request_timeout;
  141. extern int  sysctl_x25_clear_request_timeout;
  142. extern int  sysctl_x25_ack_holdback_timeout;
  143.  
  144. extern int  x25_addr_ntoa(unsigned char *, x25_address *, x25_address *);
  145. extern int  x25_addr_aton(unsigned char *, x25_address *, x25_address *);
  146. extern unsigned int x25_new_lci(struct x25_neigh *);
  147. extern struct sock *x25_find_socket(unsigned int, struct x25_neigh *);
  148. extern void x25_destroy_socket(struct sock *);
  149. extern int  x25_rx_call_request(struct sk_buff *, struct x25_neigh *, unsigned int);
  150. extern void x25_kill_by_neigh(struct x25_neigh *);
  151.  
  152. #include <net/x25call.h>
  153.  
  154. /* x25_dev.c */
  155. extern void x25_send_frame(struct sk_buff *, struct x25_neigh *);
  156. extern int  x25_lapb_receive_frame(struct sk_buff *, struct device *, struct packet_type *);
  157. extern int  x25_llc_receive_frame(struct sk_buff *, struct device *, struct packet_type *);
  158. extern void x25_establish_link(struct x25_neigh *);
  159. extern void x25_terminate_link(struct x25_neigh *);
  160.  
  161. /* x25_facilities.c */
  162. extern int  x25_parse_facilities(struct sk_buff *, struct x25_facilities *);
  163. extern int  x25_create_facilities(unsigned char *, struct x25_facilities *);
  164. extern int  x25_negotiate_facilities(struct sk_buff *, struct sock *, struct x25_facilities *);
  165. extern void x25_limit_facilities(struct x25_facilities *, struct x25_neigh *);
  166.  
  167. /* x25_in.c */
  168. extern int  x25_process_rx_frame(struct sock *, struct sk_buff *);
  169.  
  170. /* x25_link.c */
  171. extern void x25_link_control(struct sk_buff *, struct x25_neigh *, unsigned short);
  172. extern void x25_link_device_up(struct device *);
  173. extern void x25_link_device_down(struct device *);
  174. extern void x25_link_established(struct x25_neigh *);
  175. extern void x25_link_terminated(struct x25_neigh *);
  176. extern void x25_transmit_restart_request(struct x25_neigh *);
  177. extern void x25_transmit_restart_confirmation(struct x25_neigh *);
  178. extern void x25_transmit_diagnostic(struct x25_neigh *, unsigned char);
  179. extern void x25_transmit_clear_request(struct x25_neigh *, unsigned int, unsigned char);
  180. extern void x25_transmit_link(struct sk_buff *, struct x25_neigh *);
  181. extern int  x25_subscr_ioctl(unsigned int, void *);
  182. extern struct x25_neigh *x25_get_neigh(struct device *);
  183. extern void x25_link_free(void);
  184.  
  185. /* x25_out.c */
  186. extern void x25_output(struct sock *, struct sk_buff *);
  187. extern void x25_kick(struct sock *);
  188. extern void x25_enquiry_response(struct sock *);
  189.  
  190. /* x25_route.c */
  191. extern struct device *x25_get_route(x25_address *);
  192. extern struct device *x25_dev_get(char *);
  193. extern void x25_route_device_down(struct device *);
  194. extern int  x25_route_ioctl(unsigned int, void *);
  195. extern int  x25_routes_get_info(char *, char **, off_t, int, int);
  196. extern void x25_route_free(void);
  197.  
  198. /* x25_subr.c */
  199. extern void x25_clear_queues(struct sock *);
  200. extern void x25_frames_acked(struct sock *, unsigned short);
  201. extern void x25_requeue_frames(struct sock *);
  202. extern int  x25_validate_nr(struct sock *, unsigned short);
  203. extern void x25_write_internal(struct sock *, int);
  204. extern int  x25_decode(struct sock *, struct sk_buff *, int *, int *, int *, int *, int *);
  205. extern void x25_disconnect(struct sock *, int, unsigned char, unsigned char);
  206.  
  207. /* x25_timer.c */
  208. extern void x25_start_heartbeat(struct sock *);
  209. extern void x25_start_t2timer(struct sock *);
  210. extern void x25_start_t21timer(struct sock *);
  211. extern void x25_start_t22timer(struct sock *);
  212. extern void x25_start_t23timer(struct sock *);
  213. extern void x25_stop_heartbeat(struct sock *);
  214. extern void x25_stop_timer(struct sock *);
  215. extern unsigned long x25_display_timer(struct sock *);
  216.  
  217. /* sysctl_net_x25.c */
  218. extern void x25_register_sysctl(void);
  219. extern void x25_unregister_sysctl(void);
  220.  
  221. #endif
  222.